using System;
using System.Collections.Generic;


namespace Gfw.Models.Site
{
	[Serializable]
	public partial class FctFeedback: IEquatable<FctFeedback>
	{

		#region Private Members

		private string _id; 
		private string _feedbackcategory; 
		private DateTime _feedbackdate; 
		private long _userid; 
		private string _feedbacktype; 
		private string _description; 
		private long _handlerid; 
		private string _handleresult; 
		private DateTime _handledate; 
		private string _handledescription; 
		private long _checkerid; 
		private int _checkstatus; 
		private DateTime _checkdate; 		
		#endregion

		#region Constructor

		public FctFeedback()
		{
			_id = String.Empty; 
			_feedbackcategory = String.Empty; 
			_feedbackdate = DateTime.MinValue; 
			_userid = 0; 
			_feedbacktype = String.Empty; 
			_description = String.Empty; 
			_handlerid = 0; 
			_handleresult = String.Empty; 
			_handledate = DateTime.MinValue; 
			_handledescription = String.Empty; 
			_checkerid = 0; 
			_checkstatus = 0; 
			_checkdate = DateTime.MinValue; 
		}
		#endregion // End of Default ( Empty ) Class Constuctor

		#region Public Properties
			
		public virtual string Id
		{
			get
			{ 
				return _id;
			}

			set	
			{	
				if( value == null )
					throw new ArgumentOutOfRangeException("Null value not allowed for Id", value, "null");
				
				if(  value.Length > 36)
					throw new ArgumentOutOfRangeException("Invalid value for Id", value, value.ToString());
				
				_id = value;
			}
		}
			
		public virtual string FeedbackCategory
		{
			get
			{ 
				return _feedbackcategory;
			}

			set	
			{	
				if(  value != null &&  value.Length > 50)
					throw new ArgumentOutOfRangeException("Invalid value for FeedbackCategory", value, value.ToString());
				
				_feedbackcategory = value;
			}
		}
			
		public virtual DateTime FeedbackDate
		{
			get
			{ 
				return _feedbackdate;
			}
			set
			{
				_feedbackdate = value;
			}

		}
			
		public virtual long Userid
		{
			get
			{ 
				return _userid;
			}
			set
			{
				_userid = value;
			}

		}
			
		public virtual string FeedbackType
		{
			get
			{ 
				return _feedbacktype;
			}

			set	
			{	
				if(  value != null &&  value.Length > 50)
					throw new ArgumentOutOfRangeException("Invalid value for FeedbackType", value, value.ToString());
				
				_feedbacktype = value;
			}
		}
			
		public virtual string Description
		{
			get
			{ 
				return _description;
			}

			set	
			{	
				if(  value != null &&  value.Length > 2000)
					throw new ArgumentOutOfRangeException("Invalid value for Description", value, value.ToString());
				
				_description = value;
			}
		}
			
		public virtual long Handlerid
		{
			get
			{ 
				return _handlerid;
			}
			set
			{
				_handlerid = value;
			}

		}
			
		public virtual string HandleResult
		{
			get
			{ 
				return _handleresult;
			}

			set	
			{	
				if(  value != null &&  value.Length > 256)
					throw new ArgumentOutOfRangeException("Invalid value for HandleResult", value, value.ToString());
				
				_handleresult = value;
			}
		}
			
		public virtual DateTime HandleDate
		{
			get
			{ 
				return _handledate;
			}
			set
			{
				_handledate = value;
			}

		}
			
		public virtual string HandleDescription
		{
			get
			{ 
				return _handledescription;
			}

			set	
			{	
				if(  value != null &&  value.Length > 2000)
					throw new ArgumentOutOfRangeException("Invalid value for HandleDescription", value, value.ToString());
				
				_handledescription = value;
			}
		}
			
		public virtual long Checkerid
		{
			get
			{ 
				return _checkerid;
			}
			set
			{
				_checkerid = value;
			}

		}
			
		public virtual int CheckStatus
		{
			get
			{ 
				return _checkstatus;
			}
			set
			{
				_checkstatus = value;
			}

		}
			
		public virtual DateTime CheckDate
		{
			get
			{ 
				return _checkdate;
			}
			set
			{
				_checkdate = value;
			}

		}
			
				
		#endregion 

		#region Public Functions

		#endregion //Public Functions

		#region IEquatable members

		public virtual bool Equals(FctFeedback other)
		{
			if (other == this)
				return true;
		
			return ( other != null ) &&
				( this._id == other.Id );
				   
		}

		#endregion
		
	}
}
